import router from './router/index'
import store from './store'
import { RouteRecordRaw } from 'vue-router'
// 白名单
const whiteList = ['/login']
/**
 * 路由前置守卫
 * @param {*} to 要到那里去
 * @param {*} from 你从哪里来
 * @param {*} next 是否要去?
 */
router.beforeEach(async (to, from, next) => {
  if (store.getters.accessToken) {
    // 1.用户已经登录,则不允许进入 login
    if (to.path === '/login') {
      next('/')
    } else {
      // 判断用户资料是否存在,如果不存在,则获取用户信息
      if (!store.getters.hasUserInfo) {
        const { permission } = await store.dispatch('user/getUserInfo')
        // console.log(permission)
        console.log(permission.menu)
        const dynamicRoutes = await store.dispatch('permission/generateRoutes', permission.menu)
        console.log(dynamicRoutes)
        dynamicRoutes.forEach((item: RouteRecordRaw) => {
          router.addRoute(item)
        })
        // 添加完动态路由之后,需要进行一次主动跳转
        return next(to.path)
      }
      next()
    }
  } else {
    // 2. 用户未登录,只允许进入 login
    if (whiteList.indexOf(to.path) > -1) {
      // 在免登录白名单，直接进入
      next()
    } else {
      next('/login') // 否则全部重定向到登录页
    }
  }
})
